#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int get_nx(string s)
{
	int ret=0;
	for(int i=0;i<s.size();i++)
	{
		for(int j=i+1;j<s.size();j++)
		{
			if(s[i]>s[j])
				ret++;
		}
	}
	return ret;
}

struct cmp{
	string num;
	int cnt;
	bool operator < (const cmp p1) 
	{
		if(p1.cnt!=cnt)
			return cnt<p1.cnt;
		if(num.size()!=p1.num.size())
			return num.size()<p1.num.size();
		return num<p1.num;
	}
	
};
int main()
{
	int n;
	cin>>n;
	vector<cmp> v;
	for(int i=0;i<n;i++)
	{
		string t;
		cin>>t;
		v.push_back({t,get_nx(t)});
	
	}
	sort(v.begin(),v.end());
	
	for(int i=0;i<v.size();i++)
		cout<<v[i].num<<endl;
	return 0;
}
